import dayjs from "dayjs";

/**
 * 获取是早上，上午，下午，晚上
 * @returns {string}
 */
export function timeFix() {
    const time = new Date()
    const hour = time.getHours()
    return hour < 9 ? '早上好' : (hour <= 11 ? '上午好' : (hour <= 13 ? '中午好' : (hour < 20 ? '下午好' : '晚上好')))
}

/**
 * 将数字金额格式化为两位小数
 * @param x 数字金额
 * @returns {string} 格式化后的金额
 */
export function removeLeadingZero(month) {
    // 确保月份为两位数
    month = month.toString().padStart(2, '0');
    // 去除前导0
    return parseInt(month, 10);
}

export function toDecimal(x) {
    if (x !== '.') {
        let f = Math.round(x * 100) / 100;
        let s = f.toString();
        let rs = s.indexOf('.');
        if (rs <= 0) {
            rs = s.length;
            s += '.';
        }
        while (s.length <= rs + 2) {
            s += '0';
        }
        return s;
    } else {
        return '0.00';
    }
}


export function uuid(hasHyphen) {
    return (hasHyphen ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx').replace(/[xy]/g, function (c) {
        const r = Math.random() * 16 | 0
        const v = c == 'x' ? r : (r & 0x3 | 0x8)
        return v.toString(16)
    })
}
/**
 * 获取前几个月第一天的日期到当前日期的日期
 * @param days 前几个月
 * @param type 日期类型
 * @return {Array} 前几个月第一天的日期到当前日期的日期
 */
export const getBeforeMonthDate = (days,type = 'day') => {
    let beforeDate = dayjs().subtract(days, 'month'); // 获取当前日期，并减去3个月
    const now = dayjs();
    let beforeYear = beforeDate.format('YYYY'); // 获取年份
    let beforeMonth = beforeDate.format('MM'); // 获取月份
    let year = now.format('YYYY'); // 获取年份
    let month = now.format('MM'); // 获取月份
    let day = now.format('DD'); // 获取日期
    if(type === 'day'){
        return [beforeYear + '-' + beforeMonth + '-' + '01', year + '-' + month + '-' + day]
    }else if(type ==='month'){
        return [beforeYear + '-' + beforeMonth , year + '-' + month]
    }

}
/**
 * 判断两个日期是否在指定月份内
 * @param date1 开始日期
 * @param date2 结束日期
 * @param maxMonths 指定月份
 */
export const diffDate = (date1, date2, maxMonths) => {
    const dateStr1 = dayjs(date1);
    const dateStr2 = dayjs(date2);
    const monthsDiff = dateStr2.diff(dateStr1, 'months');
    return monthsDiff <= maxMonths;
}
/**
 * 补充缺失的日、月、年的数据
 * @param dateArr 原数据
 * @param type 需要补充缺失的类型
 * @param format 日期格式化
 * @param key 日期字段名
 * @param value 补充的属性值
 * @param args 补充的属性
 * @returns {*[]} 补充后的数据
 */
export const pathDate = (dateArr, type, format, key, value, ...args) => {
    let newDateArr = [];
    newDateArr.push(dateArr[0], dateArr[dateArr.length - 1]);
    let startDate = newDateArr[newDateArr.length - 2];
    let endDate = newDateArr[newDateArr.length - 1];
    let diffCounts = dayjs(endDate[key]).diff(startDate[key], type);
    for (let index = diffCounts; index > 1; index--) {
        let a = dayjs(newDateArr[newDateArr.length - 2][key])
            .add(1, type)
            .format(format);
        newDateArr.splice(newDateArr.length - 1, 0, {
            [key]: a,
        });
    }
    newDateArr.forEach((it) => {
        dateArr.forEach((item) => {
            if (item[key] === it[key]) {
                for (let keys in item) {
                    it[keys] = item[keys];
                }
            }
        });
    });
    newDateArr.forEach(item => {
        for (let itemKey in item) {
            args.forEach(arg => {
                if (!item.hasOwnProperty(arg)) {
                    item[arg] = value;
                }
            })
        }
    })
    return newDateArr;
};
